فرض کن تو یه ساختمان اداری مسئول امنیت هستی. باید بدونی کلید هر کدوم از کارمندها کجا ذخیره شده، چطور رمز درب ورودی رو تنظیم کنی، و اگر کسی اخراج شد چطور دسترسیاش رو بگیری. توی لینوکس، مدیریت رمز عبور و دسترسی root دقیقاً همینه: باید بدونی رمزها کجا ذخیره میشن، چطور تنظیمشون کنی، و چطور دسترسی مدیریت کامل (root) رو به کاربران بدی یا ازشون بگیری. این جلسه بهت یاد میده چطور این کارها رو انجام بدی!
در لینوکس، اطلاعات کاربران و رمزهای عبور در دو فایل اصلی ذخیره میشوند:
/etc/passwdcat).ya3in:x:1000:1000:,,,:/home/ya3in:/bin/bash/etc/shadowya3in:$6$xyz...:18972:0:99999:7:::
توضیح: در /etc/shadow به جای رمز، یک هش (رشتهٔ رمزنگاریشده) ذخیره میشود که قابل برگشت به رمز اصلی نیست. ستاره (*) یعنی این کاربر نمیتواند با رمز وارد شود.
/etc/shadow فقط توسط root قابل خواندن است. این کار از دیده شدن رمزهای هششده توسط کاربران عادی جلوگیری میکند.
passwd (تغییر رمز یک کاربر)
passwd سادهترین و رایجترین دستور برای تنظیم یا تغییر رمز یک کاربر است.
توضیح: با sudo passwd ali رمز کاربر ali را تغییر میدهیم. از شما خواسته میشود رمز جدید را دو بار وارد کنید.
passwd را بدون آرگومان اجرا کنید، رمز خودتان را تغییر میدهید.
chpasswd (تغییر رمز چند کاربر بهصورت یکجا)
chpasswd به شما اجازه میدهد رمز چندین کاربر را بهصورت یکجا و از طریق ورودی استاندارد تغییر دهید.
توضیح: با echo "user:password" | sudo chpasswd رمز کاربر موردنظر را تغییر میدهیم. برای چند کاربر، هر خط را به فرمت user:password مینویسیم.
chpasswd رمزها به صورت متن ساده (Plain Text) منتقل میشوند، پس حتماً از آن در محیطهای امن استفاده کنید.
گاهی نیاز دارید دسترسی یک کاربر را بهطور موقت یا دائم غیرفعال کنید، بدون اینکه او را حذف کنید. دو روش اصلی برای این کار وجود دارد:
| دستور | کاربرد | توضیح |
|---|---|---|
sudo passwd -l username |
قفل کردن (Lock) کاربر | با قرار دادن ! در ابتدای رمز در /etc/shadow |
sudo passwd -u username |
باز کردن قفل (Unlock) کاربر | برداشتن ! از ابتدای رمز |
sudo usermod -L username |
قفل کردن کاربر | مشابه passwd -l |
sudo usermod -U username |
باز کردن قفل کاربر | مشابه passwd -u |
توضیح: با passwd -l یک ! به ابتدای رمز کاربر در /etc/shadow اضافه میشود و عملاً ورود او غیرممکن میشود. با -u این علامت برداشته میشود.
passwd -l یا usermod -L باعث نمیشود که کاربر از سیستم خارج شود، فقط ورودهای جدید را مسدود میکند.
rootکاربر root قدرتمندترین کاربر در لینوکس است و دسترسی کامل به تمام بخشهای سیستم دارد. برای انجام کارهای مدیریتی، معمولاً به این کاربر نیاز پیدا میکنید. دو روش اصلی برای دسترسی به root وجود دارد:
su (Switch User)su - (با - محیط کامل root را بارگیری میکند).sudo (Superuser Do)sudo command/var/log/auth.log لاگ میشوند./etc/sudoers تعریف کنید. برای دستورات طولانی باید هر بار sudo بزنید (مگر با sudo -i).
توضیح: با su - به root تبدیل میشوید (نیاز به رمز root). با sudo apt update فقط یک دستور خاص را با دسترسی root اجرا میکنید (نیاز به رمز خودتان).
sudo برای یک کاربر
برای اینکه یک کاربر بتواند از sudo استفاده کند، باید در فایل /etc/sudoers تعریف شود. بهترین روش استفاده از دستور visudo است.
برای افزودن کاربر به گروه sudo (در دبیان/اوبونتو):
توضیح: کاربر ali به گروه sudo اضافه میشود و میتواند از sudo استفاده کند.
/etc/sudoers را بهصورت مستقیم با ویرایشگر معمولی ویرایش نکنید. همیشه از visudo استفاده کنید تا از بروز خطاهای نحوی جلوگیری شود.
su در مقابل sudo| ویژگی | su |
sudo |
|---|---|---|
| نیاز به رمز root | ✅ بله | ❌ خیر (رمز خودتان) |
| امنیت | ⚠️ پایینتر (اشتراک رمز root) | ✅ بالاتر (دستورات لاگ میشوند) |
| مدیریت دسترسی | ❌ همه یا هیچ | ✅ قابل تنظیم (دستورات خاص) |
| لاگ شدن دستورات | ❌ خیر | ✅ بله (در /var/log/auth.log) |
| مناسب برای | کارهای طولانی با دسترسی root | اجرای دستورات خاص با دسترسی root |
/etc/shadow ذخیره میشوند (فقط قابل خواندن توسط root).passwd → تغییر رمز یک کاربر.chpasswd → تغییر رمز چند کاربر بهصورت یکجا.passwd -l و usermod -L → قفل کردن کاربر.passwd -u و usermod -U → باز کردن قفل کاربر.su → تغییر به root (نیاز به رمز root).sudo → اجرای یک دستور خاص با دسترسی root (نیاز به رمز خودتان).visudo → ویرایش امن فایل /etc/sudoers.یک اسکریپت بنویسید که:
useradd ایجاد کند.passwd رمز عبور برای او تنظیم کند.usermod -L کاربر را قفل کند.usermod -U کاربر را باز کند.sudo یک دستور ساده (مثل apt update) را اجرا کند.